package com.chapter4.graph.mst;

/**
 * 
* @ClassName: Edge 
* @Description: 边 
* @author minjun
* @date 2015年3月7日 上午12:36:36 
*
 */
public class Edge implements Comparable<Edge>{
	
	private final double weight;
	
	private final int v,w;

	/**
	 * 初始化边
	 */
	public Edge(int v,int w,double weight){
		this.v=v;
		this.w=w;
		this.weight=weight;
	}
	
	/**
	 * 
	* @Title: either 
	* @Description: 边的其中一个顶点 
	* @param @return    设定文件 
	* @return int    返回类型 
	* @throws
	 */
	public int either(){
		return v;
	}
	
	/**
	 * 
	* @Title: other 
	* @Description: 边的另一个顶点 
	* @param @param v
	* @param @return    设定文件 
	* @return int    返回类型 
	* @throws
	 */
	public int other(int o){
		if(v==o) return w;
		else if(w==o) return v;
		else throw new RuntimeException("不存在此点");
	}
	
	/**
	 * 
	* @Title: weight 
	* @Description: 边的权重 
	* @param @return    设定文件 
	* @return double    返回类型 
	* @throws
	 */
	public double weight(){
		return weight;
	}
	
	/**
	 * 比较边的大小（即：比较边的权重大小）
	 */
	@Override
	public int compareTo(Edge e) {
		double result=this.weight-e.weight;
		if(result>0){
			return 1;
		}else if(result<0){
			return -1;
		}else{
			return 0;
		}
	}

	/**
	 * 以字符串的形式展现边
	 */
	@Override
	public String toString() {
		return v+"-"+w+" "+weight;
	}
	
}
